package data;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Vector;

import model.Departamento;
import model.LiquidacionExpensas;
import model.ReciboPagoExpensas;

public class AdmPersistReciboPagoExpensas {
	
	private static AdmPersistReciboPagoExpensas instancia;
	
	private AdmPersistReciboPagoExpensas(){
		
	}
	
	public static AdmPersistReciboPagoExpensas getInstancia(){
		if (instancia == null)
			instancia = new AdmPersistReciboPagoExpensas();
		return instancia;
	}
	
	public Vector<ReciboPagoExpensas> buscarRecibosPagoExpensas(int nroConsorcio, int unidadFuncional){
		try {
			Vector<ReciboPagoExpensas> recibos = new Vector<ReciboPagoExpensas>();
			ReciboPagoExpensas r = null;
			Connection con = PoolConnection.getPoolConnection().getConnection();
			PreparedStatement s = con.prepareStatement("select nroLiquidacionExpensas,fecha,formaPago,monto from seminario.dbo.ReciboPagoExpensas where unidadFuncional = ? and nroConsorcio = ?");
			s.setInt(1, unidadFuncional);
			s.setInt(2, nroConsorcio);
			ResultSet result = s.executeQuery();
			while (result.next())
			{
				int nroLiquidacionExp= result.getInt(1);
				Date fecha = result.getDate(2);
				Calendar cal = new GregorianCalendar();	
				cal.setTime(fecha);
				String formaPago = result.getString(3);
				float monto = result.getFloat(4);				
				
				Departamento d = AdmPersistDepartamento.getInstancia().buscarDepartamento(unidadFuncional, nroConsorcio);
				LiquidacionExpensas l = AdmPersistLiquidacionExpensas.getInstancia().buscarLiquidacionExpensas(nroLiquidacionExp);
				
				r = new ReciboPagoExpensas(formaPago, cal, monto, d, l);
				recibos.add(r);				
			}
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return recibos;
		} catch (Exception e) {
			System.out.println();
		}
		return null;
	}
}
